#include<iostream>
#include<type_traits>
template <typename D>
    constexpr bool type_exist(){return false;}
template <typename D,typename Ex=typename D::type>
    constexpr bool type_exist(){return true;}
template <typename D>
    constexpr bool TypeExist=type_exist<D>();
// template <typename D>
//     constexpr bool type_exist=false;
void template_fun();
int main(){
    template_fun();
    return 0;
}
template<int a>
constexpr int value=a;
void template_fun(){
    //since C++14
    std::cout<<TypeExist<int><<std::endl;
}
/* static int i=3;
 constexpr int add(int a){
    return a+(i++);
    }
 void static_test(){ 
    std::cout<<add(3)<<std::endl;
    }
 */